<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <script>
            /* 
            思路1：暴力，找出所有的子数组，然后求最大值
            
            贪心：如果-2 1 排在一起，那么一定去掉-2 从1开始
            局部最优：当前“连续和”为负数的时候立刻放弃，直接从下一个元素重新计算“连续和”，因为负数加上下一个元素，
            “连续和”只会越来越小 比如 1 -2 2 就会直接从2开始。
            因此，每次需要记录连续和，通过判断连续和是否大于0，如果大于0，那么加上下一个元素可能会更大，但是如果小于0，
            那么肯定会变小，直接跳到下一个。
            */
            var maxSubArray = function (nums) {
                let temp = 0
                let res = -Infinity
                for (let i = 0; i < nums.length; i++) {
                    if (temp >= 0) {
                        temp += nums[i]
                    } else {
                        temp = nums[i]
                    }
                    res = Math.max(temp, res)
                }
                return res
            }
        </script>
    </body>
</html>
